import { defineConfig } from 'vite'
import { resolve } from 'path'
import { input } from './build/getPage'
import postCssPxToRem from "postcss-pxtorem"
import { getPlugins } from './build/plugins'
import { loadEnv } from 'vite'

// const mode = process.argv[process.argv.length - 1]

// https://vitejs.dev/config/
export default defineConfig(({mode}) => {
 const plugins = getPlugins(mode)
  return {
    base: './',
    root: './src/views/',
    publicDir: resolve(__dirname, 'public'),
    plugins,
    define: {
        'process.env': loadEnv(mode, process.cwd())
    },
    css: {
        postcss: {
          plugins: [
            postCssPxToRem({
              rootValue({ file }) {
                return 37.5
                // return file.indexOf('vant') !== -1 ? 37.5 : 108;
              },
              propList: ['*'], // 需要转换的属性，这里选择全部都进行转换
              selectorBlackList: ['.ig-'], // 忽略的选择器   .ig-  表示 .ig- 开头的都不会转换
            })
          ]
        }
    },
    resolve: {
      alias: {
        '@': resolve(__dirname, 'src')
      }
    },
    build: {
      outDir: '../../dist', // 输出路径
      assetsDir: 'static', // 静态文件目录
          // 默认情况下 若 outDir 在 root 目录下， 则 Vite 会在构建时清空该目录。
      emptyOutDir: true,
      cssCodeSplit: true, // 默认true。如果设置为false，整个项目中的所有 CSS 将被提取到一个 CSS 文件中
      rollupOptions: {
        input,
        output: {
          chunkFileNames: 'static/js/[name]-[hash].js',
          entryFileNames: 'static/js/[name]-[hash].js',
          assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
          // manualChunks: {
          //   vandor: ['vue', 'vue-i18n', 'axios'],
          //   vant: ['vant']
          // },
          manualChunks(id) {
            // 单独打包第三方依赖
            if (id.includes("node_modules")) {
              return id
                .toString()
                .split("node_modules/")[1]
                .split("/")[0]
                .toString();
            }
          }
        }
      }
    }
  }
})
